package com.simple.upms.api.vo;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 菜单VO
 *
 * @author Administrator
 * @date 2021/01/04 16:41:08
 */
@Data
public class MenuVO implements Serializable {
    /**
     * 菜单id
     */
    private String menuId;
    /**
     * 菜单名称
     */
    private String menuName;
    /**
     * 父菜单id
     */
    private String parentId;
    /**
     * 菜单顺序
     */
    private Integer menuSort;
    /**
     * 路由地址
     */
    private String path;
    /**
     * 组件地址
     */
    private String component;
    /**
     * 是否为外链 0非外链 1外链
     */
    private Integer frame;
    /**
     * 是否缓存 0不缓存 1缓存
     */
    private Integer cache;
    /**
     * 菜单类型  M目录 C菜单 F按钮
     */
    private String menuType;
    /**
     * 菜单显示状态 0隐藏 1显示
     */
    private Integer visible;
    /**
     * 菜单状态  0停用  1正常
     */
    private Integer status;
    /**
     * 权限标识
     */
    private String perms;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * 逻辑删除 0未删除  1已删除
     */
    private Integer deleted;
    /**
     * 创建者id
     */
    private String createBy;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 更新者id
     */
    private String updateBy;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 重写hashCode方法
     * 返回menuId的hashCode值
     *
     * @return int
     */
    @Override
    public int hashCode() {
        return menuId.hashCode();
    }

    /**
     * 重写equals方法，以menuId相同为该menuVo相同为标准
     *
     * @param obj obj
     * @return boolean
     */
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof MenuVO) {
            String targetMenuId = ((MenuVO) obj).getMenuId();
            return menuId.equals(targetMenuId);
        }
        return super.equals(obj);
    }
}
